libobs_wrapper\data\properties\types/
button.rs

1use getters0::Getters;
2
3use crate::data::properties::{get_enum, get_opt_str, macros::assert_type, ObsButtonType};
4
5use super::PropertyCreationInfo;
6
7#[derive(Debug, Getters, Clone)]
8#[skip_new]
9pub struct ObsButtonProperty {
10    name: String,
11    description: Option<String>,
12    button_type: ObsButtonType,
13    url: Option<String>,
14}
15
16impl From<PropertyCreationInfo> for ObsButtonProperty {
17    fn from(
18        PropertyCreationInfo {
19            name,
20            description,
21            pointer,
22        }: PropertyCreationInfo,
23    ) -> Self {
24        assert_type!(Button, pointer);
25
26        let url = get_opt_str!(pointer, button_url);
27        let button_type = get_enum!(pointer, button_type, ObsButtonType);
28
29        Self {
30            name,
31            description,
32            button_type,
33            url,
34        }
35    }
36}